package gui;

import java.lang.reflect.Method;
import java.util.LinkedList;

public class TesteInvocadorDeMetodos 
{
	public static void main(String args[])
	{
		FachadaManipulacaoClassesDeUmProjeto fachada = new FachadaManipulacaoClassesDeUmProjeto();
		LinkedList<ClasseEMetodos> classesEMetodos = 
				fachada.pegarTodasAsClassesDoProjeto("C:/Users/Mina/Desktop/eclipse-SDK-3.7.1-win32/New folder (2)/ProjetoFormatacaoBugada");
		//antes era "C:/Users/Mina/Desktop/eclipse-SDK-3.7.1-win32/projetos2/SenhaSemInterfaceGrafica"
		
		for(int i = 0; i < classesEMetodos.size(); i++)
		{
			System.out.println("classe encontrada:" + classesEMetodos.get(i).getClasse().getSimpleName());
		}
		
		for(int j = 0; j < classesEMetodos.size(); j++)
		{
			ClasseEMetodos classeEMetodos = classesEMetodos.get(j);
			LinkedList<DeclaracaoDeMetodo> metodos = classeEMetodos.getDeclaracaoDosMetodos();
			for(int k = 0; k < metodos.size(); k++)
			{
				if(metodos.get(k).getMetodoAssociado().getName().compareTo("dividir") == 0)
				{
					try
					{
						Object instanciaDaClasseComMetodo = 
								classesEMetodos.get(j).getClasse().newInstance();
						InvocadorDeMetodos invocador =
								new InvocadorDeMetodos(metodos.get(k), instanciaDaClasseComMetodo);
						LinkedList<String> valoresDosParametros = new LinkedList<String>();
						valoresDosParametros.add("15.0");
						valoresDosParametros.add("3.0");
						System.out.println(invocador.invocarMetodo(valoresDosParametros));
					}
					catch(Exception e)
					{
						System.out.println(e);
					}
				}
			}
		}
	}

}
